home *** CD-ROM | disk | FTP | other *** search
/ Power Programmierung / Power-Programmierung (Tewi)(1994).iso / magazine / c_news / 08 / hgraph / h_graph.c < prev    next >
C/C++ Source or Header  |  1988-05-14  |  2KB  |  103 lines

  1.  
  2. #include <h_graph.h>
  3. #include <conio.h>
  4. #include <dos.h>
  5.  
  6. int h_isherc()
  7. {
  8.    union REGS reg;
  9.    char save_byte;
  10.    extern char far *h_p;
  11.    reg.h.ah=15;
  12.    int86(16,®,®);
  13.    if(reg.h.al!=7) return(-1);
  14.    save_byte=*(h_p+65535);
  15.    h_p=H_MEMLOC;
  16.    *(h_p+65535)=170;
  17.    if(*(h_p+65535)!=170) return(1);
  18.    *(h_p+65535)=85;
  19.    if(*(h_p+65535)!=85) return(1);
  20.    *(h_p+65535)=save_byte;
  21.    return(0);
  22. }
  23.  
  24. int h_init(mode)
  25. int mode;
  26. {
  27.    extern int h_vpage,h_apage,h_xpos,h_ypos;
  28.    extern int h_pmode,h_vmode,h_color,h_start;
  29.    extern int h_xmax,h_xmin,h_ymax,h_ymin;
  30.    extern char far *h_p;
  31.    char text[]={97,80,82,15,25,6,25,25,2,13,11,12,0,0,0,0};
  32.    char graph[]={53,45,46,7,91,2,87,87,2,3,0,0,0,0,0,0};
  33.    char *ptr;
  34.    unsigned i;
  35.    union REGS reg;
  36.    outp(MODEPORT,((h_vmode==99)?2:0));
  37.    ptr=((mode==99)?graph:text);
  38.    reg.h.ah=0;
  39.    reg.h.al=((mode==99)?6:7);
  40.    int86(0x10,®,®);
  41.    outp(MODEPORT,((mode==99)?2:0));
  42.    for(i=0;i<16;i++)
  43.    {
  44.       outp(ADDRPORT,i);
  45.       outp(DATAPORT,*(ptr+i));
  46.    }
  47.    h_vpage=h_apage=h_xmin=h_ymin=h_ypos=h_xpos=h_pmode=h_start=0;
  48.    h_vmode=((mode==99)?99:7);
  49.    h_xmax=719;
  50.    h_ymax=347;
  51.    if(mode==99)
  52.    {
  53.       for(i=0;i<65535;i++) *(h_p+i)=0;
  54.    }
  55.    h_color=1;
  56.    outp(MODEPORT,((mode==99)?10:8));
  57.    return(h_vmode);
  58. }
  59.  
  60.  
  61. int h_setvpage(page)
  62. int page;
  63. {
  64.    extern int h_vpage;
  65.    extern int h_vmode;
  66.    int old_page;
  67.    if(h_vmode==99)
  68.    {
  69.       outp(MODEPORT,10+((page==1)?128:0));
  70.    }
  71.    old_page=h_vpage;
  72.    h_vpage=page;
  73.    return(old_page);
  74. }
  75.  
  76.  
  77. void h_onoff(on)
  78. int on;
  79. {
  80.    extern int h_vmode;
  81.    extern int h_vpage;
  82.    outp(MODEPORT,((on)?8:0)+((h_vpage==1)?128:0)+((h_vmode==99)?2:0));
  83. }
  84.  
  85. int m_init(buttons)
  86. int *buttons;
  87. {
  88.    union REGS reg;
  89.    reg.x.ax=0;
  90.    int86(0x33,®,®);
  91.    *buttons=reg.x.bx;
  92.    return(reg.x.ax);
  93. }
  94.  
  95. void m_cursor(on)
  96. int on;
  97. {
  98.    union REGS reg;
  99.    reg.x.ax=((on)?1:2);
  100.    int86(0x33,®,®);
  101. }
  102.  
  103.